using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RBDD.Embol.AccesoDatos.Contratos
{
   public class DataFactory
   {
   #region Constructor
   static DataFactory instance = null;
   public static DataFactory Current
   {
   get
   {
       if (instance == null)
           instance = new DataFactory();
       return instance;
   }
   }
   public T GetInstance<T>(string className)
   {
     return Create<T>("RBDD.Embol.AccesoDatos.Contexto."+className+",RBDD.Embol.AccesoDatos.Contexto");
   }
   public static T Create<T>(string classFullName)
   {
       var result = (T)Didsoft.Core.Reflection.InstanciateObjectFromAssembly(classFullName);
       if (result == null)
           throw new NullReferenceException("cannot create instance of type "+classFullName);
       return result;
   }
   #endregion
   public IActitudAccesoDatos GetActitudAccesoDatos()
   {
       return this.GetInstance<IActitudAccesoDatos>("ActitudAccesoDatos");
   }
   public ICanalAccesoDatos GetCanalAccesoDatos()
   {
       return this.GetInstance<ICanalAccesoDatos>("CanalAccesoDatos");
   }
   public ICentroDistribucionAccesoDatos GetCentroDistribucionAccesoDatos()
   {
       return this.GetInstance<ICentroDistribucionAccesoDatos>("CentroDistribucionAccesoDatos");
   }
   public ICiudadAccesoDatos GetCiudadAccesoDatos()
   {
       return this.GetInstance<ICiudadAccesoDatos>("CiudadAccesoDatos");
   }
   public IClienteAccesoDatos GetClienteAccesoDatos()
   {
       return this.GetInstance<IClienteAccesoDatos>("ClienteAccesoDatos");
   }
   public IConsumidorAccesoDatos GetConsumidorAccesoDatos()
   {
       return this.GetInstance<IConsumidorAccesoDatos>("ConsumidorAccesoDatos");
   }
   public IDepartamentoAccesoDatos GetDepartamentoAccesoDatos()
   {
       return this.GetInstance<IDepartamentoAccesoDatos>("DepartamentoAccesoDatos");
   }
   public IDireccionAccesoDatos GetDireccionAccesoDatos()
   {
       return this.GetInstance<IDireccionAccesoDatos>("DireccionAccesoDatos");
   }
   public IEnvaseAccesoDatos GetEnvaseAccesoDatos()
   {
       return this.GetInstance<IEnvaseAccesoDatos>("EnvaseAccesoDatos");
   }
   public IEstadoAccesoDatos GetEstadoAccesoDatos()
   {
       return this.GetInstance<IEstadoAccesoDatos>("EstadoAccesoDatos");
   }
   public IEstadoReclamoAccesoDatos GetEstadoReclamoAccesoDatos()
   {
       return this.GetInstance<IEstadoReclamoAccesoDatos>("EstadoReclamoAccesoDatos");
   }
   public IHistorialSessionAccesoDatos GetHistorialSessionAccesoDatos()
   {
       return this.GetInstance<IHistorialSessionAccesoDatos>("HistorialSessionAccesoDatos");
   }
   public ILugarAdquisicionAccesoDatos GetLugarAdquisicionAccesoDatos()
   {
       return this.GetInstance<ILugarAdquisicionAccesoDatos>("LugarAdquisicionAccesoDatos");
   }
   public IMarcaAccesoDatos GetMarcaAccesoDatos()
   {
       return this.GetInstance<IMarcaAccesoDatos>("MarcaAccesoDatos");
   }
   public IOficinaAccesoDatos GetOficinaAccesoDatos()
   {
       return this.GetInstance<IOficinaAccesoDatos>("OficinaAccesoDatos");
   }
   public IPersonaAccesoDatos GetPersonaAccesoDatos()
   {
       return this.GetInstance<IPersonaAccesoDatos>("PersonaAccesoDatos");
   }
   public IPlantaAccesoDatos GetPlantaAccesoDatos()
   {
       return this.GetInstance<IPlantaAccesoDatos>("PlantaAccesoDatos");
   }
   public IProductoAccesoDatos GetProductoAccesoDatos()
   {
       return this.GetInstance<IProductoAccesoDatos>("ProductoAccesoDatos");
   }
   public IReclamoAccesoDatos GetReclamoAccesoDatos()
   {
       return this.GetInstance<IReclamoAccesoDatos>("ReclamoAccesoDatos");
   }
   public IReclamoProductoAccesoDatos GetReclamoProductoAccesoDatos()
   {
       return this.GetInstance<IReclamoProductoAccesoDatos>("ReclamoProductoAccesoDatos");
   }
   public IReclamoServicioAccesoDatos GetReclamoServicioAccesoDatos()
   {
       return this.GetInstance<IReclamoServicioAccesoDatos>("ReclamoServicioAccesoDatos");
   }
   public IResponsableAccesoDatos GetResponsableAccesoDatos()
   {
       return this.GetInstance<IResponsableAccesoDatos>("ResponsableAccesoDatos");
   }
   public IRolAccesoDatos GetRolAccesoDatos()
   {
       return this.GetInstance<IRolAccesoDatos>("RolAccesoDatos");
   }
   public ISessionAccesoDatos GetSessionAccesoDatos()
   {
       return this.GetInstance<ISessionAccesoDatos>("SessionAccesoDatos");
   }
   public ISolicitudAccesoDatos GetSolicitudAccesoDatos()
   {
       return this.GetInstance<ISolicitudAccesoDatos>("SolicitudAccesoDatos");
   }
   public ITamanoAccesoDatos GetTamanoAccesoDatos()
   {
       return this.GetInstance<ITamanoAccesoDatos>("TamanoAccesoDatos");
   }
   public ITipoServicioAccesoDatos GetTipoServicioAccesoDatos()
   {
       return this.GetInstance<ITipoServicioAccesoDatos>("TipoServicioAccesoDatos");
   }
   public IUsuarioAccesoDatos GetUsuarioAccesoDatos()
   {
       return this.GetInstance<IUsuarioAccesoDatos>("UsuarioAccesoDatos");
   }
   }
}

